package com.sat.apachecxf.papeletas;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

@WebService(endpointInterface = "com.sat.apachecxf.papeletas.Historial")
public class HistorialImpl implements Historial {
	SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

	public String obtenerSanciones(String dni) {
		List<SancionInfo> sanciones = getData();
		List<SancionInfo> sancionesBuscadas = new ArrayList<SancionInfo>();
		for (SancionInfo sancionInfo : sanciones) {
			if (sancionInfo.getDni().equals(dni)) {
				sancionesBuscadas.add(sancionInfo);
			}			
		}
		if (sancionesBuscadas.size() > 0) {
			String sancionesCadena = convertirString(sancionesBuscadas);			
			return sancionesCadena;
		} else {
			return "No tiene papeletas";
		}
		
	}

	private String convertirString(List<SancionInfo> sancionesBuscadas) {
		StringBuffer sancionesCadena=new StringBuffer();
		
		for (SancionInfo sancionInfo : sancionesBuscadas) {
			sancionesCadena = sancionesCadena.append(sancionInfo.getDni()).append("#");
			sancionesCadena = sancionesCadena.append(sancionInfo.getPapeleta()).append("#");
			sancionesCadena = sancionesCadena.append(sancionInfo.getLicencia()).append("#");
			sancionesCadena = sancionesCadena.append(sancionInfo.getFalta()).append("#");
			sancionesCadena = sancionesCadena.append(sancionInfo.getPlaca()).append("#");
			sancionesCadena = sancionesCadena.append(sancionInfo.getTipoFalta()).append("#");	
			sancionesCadena = sancionesCadena.append(formato.format(sancionInfo.getFechaInfraccion())).append("#");
			sancionesCadena = sancionesCadena.append("%");
		}
		return sancionesCadena.toString();
	}

	private List<SancionInfo> getData() {
		List<SancionInfo> sanciones = new ArrayList<SancionInfo>();
		
		try {
			{
				SancionInfo sancion;
				sancion = new SancionInfo("10664149", "8682296", "Q10664148",
						"G02", "COX292", "Graves", formato.parse("11/06/2010"));
				sanciones.add(sancion);
			}
			{
				SancionInfo sancion;
				sancion = new SancionInfo("10664149", "7338720", "Q10664148",
						"B09", "COX292", "Muy Graves",
						formato.parse("12/12/2007"));
				sanciones.add(sancion);
			}
			{
				SancionInfo sancion;
				sancion = new SancionInfo("10664149", "6986716", "Q10664148",
						"C28", "COX292", "Graves", formato.parse("02/05/2007"));
				sanciones.add(sancion);
			}
			{
				SancionInfo sancion;
				sancion = new SancionInfo("31664149", "6986716", "Q10664148",
						"C28", "COX292", "Graves", formato.parse("02/05/2007"));
				sanciones.add(sancion);
			}

		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return sanciones;
	}

}
